# day7数据排序与可视化
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

def generate_and_visualize_data(n=5, random_range=(1, 11), seed=42, ascending=True):
    """
    生成随机数据，排序并可视化
    :param n: 数据行数
    :param random_range: 随机整数生成范围（左闭右开）
    :param seed: 随机种子，保证结果复现
    :param ascending: 排序方式，True为升序
    """
    np.random.seed(seed)
    data = pd.DataFrame({
        'A': np.random.randint(random_range[0], random_range[1], size=n),
        'B': np.arange(1, n+1)
    })
    print("原始数据：\n", data)
    sorted_data = data.sort_values(by='A', ascending=ascending)
    print("\n排序后的数据：\n", sorted_data)
    print(f"\nA列统计 - 均值: {sorted_data['A'].mean():.2f}, 最大值: {sorted_data['A'].max()}, 最小值: {sorted_data['A'].min()}")
    
    # 可视化：推荐用scatter，点与点之间无连接关系
    plt.figure(figsize=(8, 5))
    plt.scatter(sorted_data['A'], sorted_data['B'], color='dodgerblue', s=80, label='数据点')
    plt.title('数据排序与可视化')
    plt.xlabel('A列值')
    plt.ylabel('B列值')
    plt.grid(True)
    plt.legend()
    plt.tight_layout()
    # plt.savefig('sorted_scatter.png')
    plt.show()

if __name__ == "__main__":
    generate_and_visualize_data(n=10, random_range=(1, 21), seed=123, ascending=True) 

